package dao

import (
	"time"
)

// 这是 Message 的全局公开dao对象，被service层调用!
var MessageDao = messageDao{}

// message 短消息(私信)
// 这是 message表 的实体类,这个实体类中的字段可以减少，但是不能在其基础上增加!
type Message struct {
	Id      int32     `json:"id" form:"id" db:"id" v:"id"`
	Content string    `json:"content" form:"content" db:"content" v:"content"` // 消息内容
	HasRead string    `json:"has_read" form:"has_read" db:"has_read" v:"has_read"`
	From    int32     `json:"from" form:"from" db:"from" v:"from"`                 // 来自谁
	FromDel string    `json:"from_del" form:"from_del" db:"from_del" v:"from_del"` // 发送方删除标识
	To      int32     `json:"to" form:"to" db:"to" v:"to"`                         // 发给谁
	ToDel   string    `json:"to_del" form:"to_del" db:"to_del" v:"to_del"`         // 接收方删除标识
	Ctime   time.Time `json:"ctime" form:"ctime" db:"ctime" v:"ctime"`
}

// 注意:这是 Message 的私有dao对象，只能在dao层内使用!
type messageDao struct {
	InsertTemplate func(arg Message) (int64, error)         //插入一条记录
	UpdateTemplate func(arg Message) (int64, error)         //更新一条记录
	DeleteTemplate func(id int64) (int64, error)            `arg:"id"` //根据传入的主键删除一条记录
	SelectTemplate func(id int64) (Message, error)          `arg:"id"` //根据传入的主键获取一条记录
	List           func(arg MessageList) ([]Message, error) //模糊分页查询
}

/*
// 这是 message 表的Postman测试参数
// 该结构体中的字段就是: 前后端交互的json字段!
type MessagePostman struct {
id
content
has_read
from
from_del
to
to_del
ctime

}*/

// 这是 message 表的批量请求参数
type MessageReq struct {
	List []Message `json:"list" form:"list"`
}

// 这是 messageDao.List()方法的请求参数
type MessageList struct {
	Page
}
